// author: shelman
// description: 封装了网络信息获取的接口

#pragma once

#include <iostream>
#include <string>
#include <vector>
#include "export_def.h"

// 开放的端口信息
struct OpenProtInfo {
    unsigned short usPort = 0; // 端口
    std::string strProtocol = ""; // 端口协议类型，udp、tcp、udp&tcp
    std::string srtServiceType = ""; // 端口服务类型，可以查SERVICE_MAP表（实现文件中）
};

// 网络接口信息
struct NetInterfaceInfo {
    double dRxSpeedKBs = 0; // 接收速率-下行 (KB/s)
    double dTxSpeedKBs = 0; // 发送速率-上行 (KB/s)
    std::vector<std::string> vtEthNames; // 网卡名称集合
    std::vector<OpenProtInfo> vtPortInfos; // 开放端口的信息集合
};

/********************************************************
 * 功能：开始网络状态监测，目前主要是监测网速
 * 输入参数：
 *      iSeconds：监测间隔，单位秒
 * ******************************************************/
API_EXPORT_DECL void startNetStateMonitor(int iSeconds);

/********************************************************
 * 功能：停止网络状态监测
 * ******************************************************/
API_EXPORT_DECL void stopNetStateMonitor();

/********************************************************
 * 功能：获取网络接口信息
 * 输出参数：
 *      stInfos：网络接口信息
 * ******************************************************/
API_EXPORT_DECL void getNetInterfaceInfo(NetInterfaceInfo& stInfos);

